aboutsummaryrefslogtreecommitdiff
path: root/pages/logs/[directory].tsx
diff options
context:
space:
mode:
authorflu0r1ne <flu0r1ne@flu0r1ne.net>2021-07-21 03:59:15 -0500
committerflu0r1ne <flu0r1ne@flu0r1ne.net>2021-07-21 03:59:15 -0500
commit437268370661087dbe31323efb18dfe1a518da33 (patch)
treecffc95cc50da55eced9ed1e3b68502c68f01ca19 /pages/logs/[directory].tsx
parent51967b62cd274b10326a604d4db670e9e89f8fd5 (diff)
downloadhomepage-437268370661087dbe31323efb18dfe1a518da33.tar.xz
homepage-437268370661087dbe31323efb18dfe1a518da33.zip
Dynamic markdown page generation with preloading
Diffstat (limited to 'pages/logs/[directory].tsx')
-rw-r--r--pages/logs/[directory].tsx58
1 files changed, 58 insertions, 0 deletions
diff --git a/pages/logs/[directory].tsx b/pages/logs/[directory].tsx
new file mode 100644
index 0000000..00fe78d
--- /dev/null
+++ b/pages/logs/[directory].tsx
@@ -0,0 +1,58 @@
+import path from 'path';
+import { GetStaticProps, GetStaticPropsContext } from 'next';
+import React, { FC } from 'react';
+import { getPosts, getMarkdown, Post, getPostFromDirectory } from '../../utils/Posts';
+import Markdown from '../../components/Markdown';
+import DefaultPage from '../../templates/Default';
+
+interface Props {
+ post: Post;
+ markdown: string;
+}
+
+const Page : FC<Props> = ({ post, markdown }) => {
+ return (
+ <>
+ <DefaultPage
+ path={"/logs/" + post.directory}
+ >
+ <Markdown
+ md={markdown}
+ />
+ </DefaultPage>
+ </>
+ );
+}
+
+export default Page;
+
+export const getStaticProps: GetStaticProps = async (
+ context: GetStaticPropsContext
+ ) => {
+ const directory = context.params!.directory as string;
+
+ const post = await getPostFromDirectory(directory);
+
+ const markdown = await getMarkdown(post);
+
+ return {
+ props: { post, markdown },
+ }
+}
+
+export async function getStaticPaths() {
+ const posts = await getPosts();
+
+ const paths = posts.map((post) => {
+ return {
+ params: {
+ directory: post.directory
+ }
+ };
+ });
+
+ return {
+ paths,
+ fallback: false
+ };
+} \ No newline at end of file